1. 自定义监控项

如何获取系统中我们想监控的对象的值,获取之后又是如何传递给zabbix-server

1. 监控系统中的对象
[root@web01 ~]# w | awk 'NR==1{print $(NF-6)}'
2

2. 客户端如何添加这个监控项
#监控项添加的文件(模板示例)
Include=/etc/zabbix/zabbix_agentd.d/*.conf
### Option: UserParameter
#       User-defined parameter to monitor. There can be several user-defined parameters.
#       Format: UserParameter=<key>,<shell command>
#       See 'zabbix_agentd' directory for examples.

#切换到脚本目录,然后进行编写UserParameter=<key>,<shell command>
[root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/qls.conf
UserParameter=login_number,w | awk 'NR==1{print $(NF-6)}'


3. 编写了配置文件,需要进行重启操作
[root@web01 ~]# systemctl  restart zabbix-agent.service 


4. 测试监控项的值,检查
[root@web01 ~]# zabbix_agentd  -t  login_number
login_number                                  [t|2]
[root@web01 ~]# zabbix_agentd -p  | grep login_number
login_number                                  [t|2]
           d   Number with a decimal part.
           m   Not supported.  This could be caused by querying an item that only works in the active mode like a  log  monitoring
               item or an item that requires multiple collected values.  Permission issues or incorrect user parameters could also
               result in the not supported state.
           s   Text.  Maximum length not limited.
           t   Text.  Same as s.
           u   Unsigned integer.


5. 如何让zabbix-server也获取到这个值的
#首先要安装对应版本的get命令
[root@zabbix-server ~]# yum install -y  https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-get-4.0.18-1.el7.x86_64.rpm
#然后使用get命令获取
[root@zabbix-server ~]# zabbix_get -s 172.16.1.7  -p10050  -k  login_number
2
    -s   指定主机
    -p    端口号    
    -k    指定key

6. web配置如下

在这里插入图片描述 在这里插入图片描述在这里插入图片描述在这里插入图片描述

2. 自定义触发器

当用户登录的数量超过3个则报警
{web01:login_number.last()}>3

配置如下

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

3. 自定义报警(邮件)

名称:Action-Email
默认标题:故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID} 


恢复标题:恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
恢复信息:

告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

web页面配置如下

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述 在这里插入图片描述 在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

4. 自定义报警(微信)

AgentId
1000002
Secret
L7Ab6xf0u_4mlarFIyuorwSwtvWGwervBGg3x1QC99E

[root@zabbix-server ~]# yum  install -y  python-pip

[root@zabbix-server ~]# 
[root@zabbix-server ~]# pip  install  requests


[root@zabbix-server ~]# cd  /usr/lib/zabbix/alertscripts/
[root@zabbix-server /usr/lib/zabbix/alertscripts]# ll
total 0
[root@zabbix-server /usr/lib/zabbix/alertscripts]# vim weixin.py
[root@zabbix-server /usr/lib/zabbix/alertscripts]# cat weixin.py
#!/usr/bin/env python
#-*- coding: utf-8 -*-
#author: qls
#date: 2019
#comment: zabbix接入微信报警脚本

import requests
import sys
import os
import json
import logging

logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
        datefmt = '%a, %d %b %Y %H:%M:%S',
        filename = os.path.join('/tmp','weixin.log'),
        filemode = 'a')

corpid='wwb68507a95090e011'  ##更改
appsecret='L7Ab6xf0u_4mlarFIyuorwSwtvWGwervBGg3x1QC99E'   ##更改
agentid=1000002   ##更改
#获取accesstoken
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
req=requests.get(token_url)
accesstoken=req.json()['access_token']

#发送消息

msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken

touser=sys.argv[1]
subject=sys.argv[2]
#toparty='3|4|5|6'
message=sys.argv[2] + "\n\n" +sys.argv[3]

params={
        "touser": touser,
        # "toparty": toparty,
        "msgtype": "text",
        "agentid": agentid,
        "text": {
            "content": message
            },
        "safe":0
        }

req=requests.post(msgsend_url, data=json.dumps(params))

logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)


[root@zabbix-server /usr/lib/zabbix/alertscripts]# chmod  +x weixin.py

[root@zabbix-server /usr/lib/zabbix/alertscripts]# ./weixin.py  QiuZengJia  test  hello
[root@zabbix-server /usr/lib/zabbix/alertscripts]# rm -f /tmp/weixin.log



{ALERT.SENDTO}                    #发送的⽤户

{ALERT.SUBJECT}                    #发送的主题

{ALERT.MESSAGE}                    #发送的内容

配置如下

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述 在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

5. 自定义监控项深入

1. 监控tcp的22端口是否处于启动状态

net.tcp.listen[port]    检查 TCP 端口 是否处于侦听状态。返回 0 - 未侦听;1 - 正在侦听

#强制刷新
[root@zabbix-server ~]# zabbix_server -R config_cache_reload

2. 监控TCP的11种状态


[root@web01 ~]# netstat  -ant | grep -c TIME_WAIT
38

[root@web01 /etc/zabbix/zabbix_agentd.d]# cat qls.conf
UserParameter=login_number,w | awk 'NR==1{print $(NF-6)}'
UserParameter=tcp_state[*],netstat -ant |grep -c $1
[root@web01 /etc/zabbix/zabbix_agentd.d]# systemctl  restart zabbix-agent.service

#服务端进行取值
[root@zabbix-server ~]# zabbix_get  -s 172.16.1.7  -k tcp_state[TIME_WAIT]
32
配置如下

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

6. Zabbix自定义配置阈值深入

监控内存百分比(取出内存的可用大小 / 总内存大小 = 实际可用的百分比)

1. 自定义监控内存可用百分比

[root@web01    ~]#    vim    /etc/zabbix/zabbix_agentd.d/oldboy.conf
UserParameter=Mem_pre,free    -m|awk    '/^Mem/{print    $NF*100/$2}'
[root@web01    ~]#    systemctl    restart    zabbix-agent

2. 在ZabbixServer验证监控项是否可用

[root@ZabbixServer    ~]#    zabbix_get    -s    172.16.1.7    -k    'Mem_pre'
72.1766

3. Zabbix-Web页面添加监控项

在这里插入图片描述在这里插入图片描述

4. 自定义单条件触发器,设置内存低于 30% 进行报警

点击对应主机->创建触发器 在这里插入图片描述

填写表达式
问题表达式: {web01-172.16.1.7:Mem_pre.last()}<30
恢复表达式: {web01-172.16.1.7:Mem_pre.last()}>30

在这里插入图片描述

使用dd if=/dev/zero of=/dev/null bs=500M count=1024压低内存
[root@web01 zabbix_agentd.d]# dd if=/dev/zero of=/dev/null bs=500M count=1024

在这里插入图片描述

5. 生产建议:内存低于10%以及swap使用大于5%,再进行报警(会更精准)

增加swap的监控
[root@web01    ~]#    vim    /etc/zabbix/zabbix_agentd.d/oldboy.conf
UserParameter=Swap_pre,free    -m|awk    '/^Swap/{print $3*100/$2}'
[root@web01    ~]#    systemctl    restart    zabbix-agent
在ZabbixServer使用zabbix_get命令测试
[root@ZabbixServer    ~]#    zabbix_get    -s    172.16.1.7    -k    'Swap_pre'
0
在ZabbixWeb创建自定义监控项

在这里插入图片描述

基于之前建立的触发器进行修改,修改为多条规则同时满足才触发,如下: {Web01-172.16.1.7:Mempre.last()}<30 and {Web01-172.16.1.7:Swappre.last()}>5

在这里插入图片描述

使用dd命令消耗客户端内存(只满足内存低于30%,所以不会进行报警)
[root@web01 zabbix_agentd.d]# dd if=/dev/zero of=/dev/null bs=500M count=1024

在这里插入图片描述

使用dd命令消耗客户端内存(满足内存低于30%,并且swap使用率超过5%)
[root@web01 zabbix_agentd.d]# dd if=/dev/zero of=/dev/null bs=800M count=1024

在这里插入图片描述 在这里插入图片描述

6. 常用的触发器表达式,常用的函数,触发器表达式参考url

#常用的触发器
and                 #并且
or                     #或者
last()                 #比对最新的值
avg()                 #平均值
diff()                 #比对上一次文件的内容
nodata()             #收不到数据进行报警nodata(5m)
(5m)             #表示最近5分钟得到值
(#5)                #表示最近5次得到的值

7. Zabbix自定义监控图形

1. 查看图形界面的时候会出现乱码的情况,需要修改图形界面的字符集。

#linux系统上面修改
[root@zabbix_server ~]# cd /usr/share/zabbix/assets/fonts/
#上传本地的字符集到此目录下。本地字符集在c盘/Windows/Fonts目录下,选择一个上传到服务器中

[root@zabbix_server /usr/share/zabbix/assets/fonts]# rz
[root@zabbix_server /usr/share/zabbix/assets/fonts]# ll
total 11100
lrwxrwxrwx 1 root root 33 2019-12-17 16:29 graphfont.ttf -> /etc/alternatives/zabbix-web-font
-rw-r--r-- 1 root root 11362788 2017-12-13 10:39 STFANGSO.TTF
[root@zabbix_server /usr/share/zabbix/assets/fonts]# mv graphfont.ttf graphfont.ttf.bak
[root@zabbix_server /usr/share/zabbix/assets/fonts]# ll
total 11100
lrwxrwxrwx 1 root root 33 2019-12-17 16:29 graphfont.ttf.bak -> /etc/alternatives/zabbix-web-font
-rw-r--r-- 1 root root 11362788 2017-12-13 10:39 STFANGSO.TTF
[root@zabbix_server /usr/share/zabbix/assets/fonts]# mv STFANGSO.TTF graphfont.ttf
#刷新浏览器页面

在这里插入图片描述

2. 介绍监控的顺序->应用级->监控项->基于监控项创建触发器->基于监控项创建图形

在这里插入图片描述

3. 基于监控项进行绘图

在这里插入图片描述在这里插入图片描述

4. 将多张图形整合为⼀张图形, 简称聚合图形

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

5. 多张聚合图形可以整合为幻灯片

在这里插入图片描述

在这里插入图片描述

8. 自定义图形树

1.安装graphtree

[root@zabbixserver dejavu]# cd /usr/share/zabbix
[root@zabbixserver zabbix]# wget https://raw.githubusercontent.com/OneOaaS/graphtrees/master/graphtree3.0.4.patch

2.导⼊补丁包

[root@zabbixserver zabbix]# yum install -y patch
[root@zabbixserver zabbix]# patch -Np0 <graphtree3.0.4.patch
[root@zabbixserver zabbix]# chown -R apache.apache oneoaas

3.修改Apache配置⽂件

[root@zabbixserver zabbix]# vim /etc/httpd/conf.d/zabbix.conf

    Alias    /oneoaas    /usr/share/zabbix/oneoaas    #添加

4.重启httpd服务

[root@zabbixserver zabbix]# systemctl restart httpd
效果图

在这里插入图片描述

9. Zabbix自定义模板

1. 模板是支持导入与导出(模板里面的监控项是有脚本支撑,所以脚本需一起打包)
2. .conf为结尾的配置文件,用来定义监控项,调用脚本或命令。
3. 如果希望将之前定义的监控项做成模板,找到监控项->全选->复制
4. 自定义使用模板(让监控项可以重复使用)

在这里插入图片描述 在这里插入图片描述在这里插入图片描述

1.客户端agent必须要定义监控项,监控项取值需要使用到脚本文件或系统命令
2.服务端导入模板
3.创建监控主机,链接新导入模板,如果是已存在的监控主机,增加我们刚导入的模板
Copyright © 高程程 all right reserved,powered by Gitbook修订于: 2021-05-18 21:14:55

results matching ""

    No results matching ""